import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)  //将vuex安装到项目中

export default new Vuex.Store({
  state: {//负责状态管理，类似于vue中的data，用于初始化数据
    tempCar:[
        {id:1,store_name:'喜洋洋蛋糕店',src:'./img/goods1.jpg',name:'发声情人节女神款',price:169,cakeSize:8,num:1}
        ],
      shopCar:[],  //空数组
  },
  mutations: {  //专用于修改state中的数据，通过commit触发，不能写异步的代码，只能写同步的操作
    //数据仓库中定义方法,第一个参数不能改变，必须是state，第二个参数时传递过来的参数
    clickCar(state,obj){
      state.tempCar=[];  //清空数组中的数据，让数组中永远只有你点击时发送的一条数据
      state.tempCar.push(obj);
      var flag = false;
        state.shopCar.some(item=>{
            if(item.store_name==obj.store_name&&item.name==obj.name){
                item.num+=obj.num;
                flag=true;
                return true;   //终止后续的some循环
            }
        })
        //如果flag没有变为true，表示shopCar数据中没有这个商品，就直接追加
        if(!flag){
            state.shopCar.push(obj);
            localStorage['shopCar'] = JSON.stringify(state.shopCar);
        }
    },
  },
  actions: {  //异步操作，在action中不能直接修改state中的数据，必须通过xx.commit()触发某个mutations才行，组件中通过this.$store.dispatch调用

  },
  modules: {  //模块化管理
  },
  getters:{  //相当于vue中的computer计算属性，不会修改state中的数据
    // getCount(state){
    //   return state.count += 5;
    // }
  }
})
